Explain design model.
Design Model in Software Engineering​
A design model is a representation of a software system that is created during the design phase of software development. It translates the requirements gathered during analysis into a blueprint for constructing the system, providing a conceptual framework that guides the implementation process. Design models describe the system at various levels of abstraction and from different perspectives.
Purpose of Design Models​
Design models serve several important purposes:
- Blueprint for Implementation: Provide detailed guidance for coding and construction
- Communication Tool: Facilitate understanding among team members and stakeholders
- Documentation: Capture design decisions and system structure
- Analysis Medium: Enable evaluation of design alternatives and quality attributes
- Verification Basis: Allow checking that requirements are properly addressed
- Evolution Framework: Support system maintenance and evolution
Components of a Design Model​
A comprehensive design model consists of multiple sub-models that address different aspects of the system:
1. Architectural Design Model​
- Defines the overall structure of the system
- Identifies major components and their relationships
- Establishes architectural patterns and styles
- Addresses global control structure and data management
2. Interface Design Model​
- Specifies how components interact with each other
- Defines APIs (Application Programming Interfaces)
- Details user interface layout and interaction patterns
- Describes external system interfaces
3. Component-Level Design Model​
- Refines each architectural component into implementable modules
- Defines algorithms and data structures
- Specifies processing details and logic
- Addresses component-specific behavior
4. Data Design Model​
- Describes data structures and relationships
- Defines database schemas and object models
- Specifies data transformation and persistence mechanisms
- Addresses data access patterns
5. Behavioral Design Model​
- Details how the system responds to external events
- Defines system states and transitions
- Specifies control flow and concurrency
- Addresses error handling and exception management
Representation Techniques for Design Models​
Design models are represented using various notations and diagrams:
1. UML (Unified Modeling Language) Diagrams​
- Class Diagrams: Show static structure of classes and their relationships
- Sequence Diagrams: Illustrate interaction between objects over time
- Component Diagrams: Depict organization and dependencies among components
- State Diagrams: Represent states and transitions of system objects
- Activity Diagrams: Show workflow and procedural logic
- Deployment Diagrams: Illustrate physical deployment of artifacts
2. Entity-Relationship Diagrams (ERDs)​
- Model data entities and their relationships
- Support database design and data structure definition
3. Data Flow Diagrams (DFDs)​
- Represent flow of data through the system
- Show data transformations and storage
4. Architectural Views​
- Module view: Shows code structure and organization
- Component-and-connector view: Illustrates runtime entities and interactions
- Allocation view: Maps software elements to environment
5. Formal Specification Languages​
- Using mathematical notation to precisely specify behavior
- Examples include Z notation, VDM, and OCL
Design Model Abstraction Levels​
Design models exist at different levels of abstraction:
1. Conceptual Level​
- High-level models focusing on system concepts
- Architecture and major components
- Broad interaction patterns
2. Logical Level​
- Detailed structural and behavioral specifications
- Independent of implementation technology
- Focused on "what" the system does
3. Physical Level​
- Implementation-specific details
- Technology choices and constraints
- Focused on "how" the system works
Design Model Evolution​
Design models evolve through several stages:
- Initial Design Model: Based directly on requirements analysis
- Refined Design Model: Enhanced through design iterations and reviews
- Final Design Model: Complete specification ready for implementation
- As-Built Design Model: Updated to reflect the actual implemented system
Design Model Quality Attributes​
A good design model should exhibit these qualities:
- Completeness: Covers all system aspects required for implementation
- Consistency: Contains no contradictions between different parts
- Correctness: Accurately represents the intended system
- Understandability: Clear and comprehensible to stakeholders
- Modularity: Organized into cohesive, loosely coupled components
- Traceability: Linked to requirements and implementation artifacts
- Maintainability: Supports system evolution and modification
Design models form the critical bridge between requirements and implementation, translating abstract user needs into concrete specifications that developers can implement.